package com.cskaoyan.javase.overload._0introduction;
/**
 * 方法的重载：
 *      在同一个类中，多个方法具有相同的方法名。
 * 方法的名字是用来区分方法的，那么方法名相同后，如何区分方法呢？
 * 方法的签名：唯一确定一个方法，指的是“方法名（形参列表）”
 * 现在方法名相同了，只能依赖于形参列表不同。
 *
 * 所以，在同一个类中，多个方法具有相同的方法名构成方法的重载，必须要求它们的形参列表不同。
 *
 * 何为形参列表不同呢？
 *      1.形参数量不同
 *      2.形参数量相同时，形参的数据类型不同
 *      3.形参数量和数据类型都相同时，形参的数据类型的顺序不同
 *
 * 以上三个条件构成方法的重载，除此之外，再没有别的条件了。
 * 比如典型的错误：
 *      1.方法的形参名字不同，不能构造方法重载。
 *      2.修饰符不同，不能构造方法重载。
 *      3.返回值类型不同，不能构造方法重载。
 *
 *
 * @since 09:39
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class NewDemo {
    public static void main(String[] args) {
        System.out.println(sum(1, 2));
        System.out.println(sum(0.1, 0.2));
    }

    // void test(){}
    // public static int test(){
    //     return 1;
    // }
    public static void test(){}
    // 'test()' is already defined in 'com.cskaoyan.javase.overload._0introduction.NewDemo'
    // public static void test(){}
    public static void test(int a){}
    // public static void test(int num){}
    public static void test(double a){}
    public static void test(double a,int b){}
    public static void test(int a,double b){}


    // 编写程序，计算两个int类型数据之和，并输出结果
    public static int sum(int num1, int num2) {
        return num1 + num2;
    }
    // 编写程序，计算两个double类型数据之和，并输出结果
    public static double sum(double num1, double num2) {
        return num1 + num2;
    }
    // 编写程序，计算两个long类型数据之和，并输出结果
    public static long sum(long num1, long num2) {
        return num1 + num2;
    }

}
